package com.whfc.mach.service;

import com.whfc.common.exception.BizException;
import com.whfc.common.result.PageData;
import com.whfc.mach.dto.Gps;
import com.whfc.mach.dto.obd.*;
import com.whfc.mach.entity.AppDeviceObdLog;

import java.util.Date;
import java.util.List;

/**
 * @Description:
 * @author: xugcheng
 * @version: 1.0
 * @date: 2020/1/2 16:15
 */
public interface ObdDataService {

    /**
     * 设备obd信息
     *
     * @param machId
     * @return
     * @throws BizException
     */
    ObdDataDTO getObdData(Integer machId) throws BizException;

    /**
     * 获取设备运行轨迹
     *
     * @param machId
     * @param date
     * @return
     * @throws BizException
     */
    List<Gps> gpsLog(Integer machId, Date date) throws BizException;

    /**
     * 获取obd参数列表
     *
     * @param machId
     * @return
     * @throws BizException
     */
    ObdParamDTO getParamList(Integer machId) throws BizException;

    /**
     * 获取obd参数列表
     *
     * @param machId
     * @return
     * @throws BizException
     */
    ObdParamDTO getParam(Integer machId) throws BizException;

    /**
     * 获取obd设备油耗数据（多天）
     *
     * @param machId
     * @param startDate
     * @param endDate
     * @return
     * @throws BizException
     */
    ObdOilDataDTO oilData(Integer machId, Date startDate, Date endDate) throws BizException;

    /**
     * 获取obd设备油耗数据（一天）
     *
     * @param machId
     * @param date
     * @return
     * @throws BizException
     */
    ObdOilDataDTO oilData(Integer machId, Date date) throws BizException;

    /**
     * 获取obd设备放线里程数据（多天）
     *
     * @param machId
     * @param startDate
     * @param endDate
     * @return
     * @throws BizException
     */
    ObdMileDataDTO mileData(Integer machId, Date startDate, Date endDate) throws BizException;

    /**
     * 获取obd设备放线里程数据（一天）
     *
     * @param machId
     * @param date
     * @return
     * @throws BizException
     */
    ObdMileDataDTO mileData(Integer machId, Date date) throws BizException;

    /**
     * 查询OBD硬件原始数据
     *
     * @param deviceId
     * @param startTime
     * @param endTime
     * @param pageNum
     * @param pageSize
     * @return
     * @throws BizException
     */
    PageData<AppDeviceObdLogDTO> getDeviceObdDataList(Integer deviceId, Date startTime, Date endTime, Integer pageNum, Integer pageSize) throws BizException;

    /**
     * 查询OBD指定时间数据
     *
     * @param deviceId
     * @param time
     * @return
     * @throws BizException
     */
    AppDeviceObdDataDTO getDeviceObdDataDetail(Integer deviceId, Date time) throws BizException;

    /**
     * 内部添加OBD数据
     *
     * @param appDeviceObdLog
     * @throws BizException
     */
    void innerAddObdData(AppDeviceObdLog appDeviceObdLog) throws BizException;

    /**
     * 统计设备每日obd数据
     *
     * @param date
     */
    void statMachDayData(Date date) throws BizException;

    /**
     * 修正obd硬件数据
     *
     * @param data
     * @throws BizException
     */
    void amendObdDeviceData(AppDeviceObdLog data) throws BizException;

    /**
     * 获取一段时间的牵张数据
     *
     * @param machId
     * @param startTime
     * @param endTime
     * @return
     * @throws BizException
     */
    List<AppDeviceObdLogDTO> qzData(Integer machId, Date startTime, Date endTime) throws BizException;

}
